package com.kaigejava.DecoratorModelzhuangshizhe.myio;

import java.io.FileInputStream;
import java.io.FilterInputStream;
import java.io.IOException;
import java.io.InputStream;

/**
 * Created by kaigejava on 2019/8/14.
 * 因为是从文件中读取的，所以，我们自己装饰者类需要继承FilterInputStream类
 */
public class UpperCaseInputStream extends FilterInputStream {
    protected UpperCaseInputStream(InputStream in) {
        super(in);
    }
    /**
     * 一个一个字符串读取
     * @return
     * @throws IOException
     */
    public int read() throws IOException{
        //这里调用父类的读取方法
        int ch = super.read();
        return  ch==-1?ch:Character.toUpperCase((char)(ch));
    }

    /**
     * 字节数组读取
     * @param b         需要读取的字节数组
     * @param offset    其实值
     * @param len       读取长度
     * @return
     * @throws IOException
     */
    public int read(byte [] b ,int offset,int len) throws  IOException{
        int result = super.read(b,offset,len);
        for(int i=0;i<result;i++)
        {
            b[i]=(byte)Character.toUpperCase((char)(b[i]));
        }

        return result;
    }
}
